#ifndef __qyfinddialog__
#define __qyfinddialog__

#include <QDialog>

class QComboBox;
class QCheckBox;
class QPushButton;
class QBoxLayout;

/*! \class QyFindDialog
	\brief Диалог поиска строки в тексте.

	QyFindDialog имеет поле для ввода искомой строки, и флажки опций:
	- регулярное выражение
	- чувствительность к регистру
	- учет фразы целиком

	Можно управлят раположением виджетов при помощи setDirection. См. QBoxLayout::Direction.

	При нажатии на Return эмитируется сигнал initFind и диалог закрывается. По Escape диалог просто закрывается.
	QyFindDialog запоминает искомые слова, пользователь может в любой момент обратиться к истории запросов.

*/

class QyFindDialog : public QDialog {
	Q_OBJECT
public:
	QyFindDialog( QWidget * parent=0 ); //!< Стандартный конструктор

	int direction() const; //!< расположение виджетов в диалоге
	QString text() const;  //!< строка для поиска

public slots:
	void setDirection( int direction ); //!< установить расположение виджетов
	void setText( const QString & text ); //!< установить строку для поиска

signals:
	void initFind( const QString & str, bool re, bool cs, bool wm ); //!< пользователь щелкнул Return, служит для инициализации поиска

private slots:
	void findTextEditReturnPressed();
	void on_layoutButton_clicked();

private:
	void keyPressEvent( QKeyEvent * event );

	QComboBox * findTextEdit;
	QCheckBox * regExpBox,
		* caseSensitiveBox,
		* wordMatchesBox;
	QBoxLayout * boxLayout;
	QPushButton * layoutButton;

};

#endif/*__qyfinddialog__*/
